using System;
using System.Collections.Generic;
using System.Text;

using MarketPlace.Data.Bases;

namespace MarketPlace.Data.ManagerObjects
{
    public interface IManagerFactory
    {
		// Get Methods
		ICompanyManager GetCompanyManager();
		ICompanyManager GetCompanyManager(INHibernateSession session);
		IContactInfoManager GetContactInfoManager();
		IContactInfoManager GetContactInfoManager(INHibernateSession session);
		IIndustryManager GetIndustryManager();
		IIndustryManager GetIndustryManager(INHibernateSession session);
		ILogManager GetLogManager();
		ILogManager GetLogManager(INHibernateSession session);
		IMarketInfoManager GetMarketInfoManager();
		IMarketInfoManager GetMarketInfoManager(INHibernateSession session);
		IProductManager GetProductManager();
		IProductManager GetProductManager(INHibernateSession session);
		IRegionManager GetRegionManager();
		IRegionManager GetRegionManager(INHibernateSession session);
		IUserManager GetUserManager();
		IUserManager GetUserManager(INHibernateSession session);
    }

    public class ManagerFactory : IManagerFactory
    {
        #region Constructors

        public ManagerFactory()
        {
        }

        #endregion

        #region Get Methods

		public ICompanyManager GetCompanyManager()
        {
            return new CompanyManager();
        }
		public ICompanyManager GetCompanyManager(INHibernateSession session)
        {
            return new CompanyManager(session);
        }
		public IContactInfoManager GetContactInfoManager()
        {
            return new ContactInfoManager();
        }
		public IContactInfoManager GetContactInfoManager(INHibernateSession session)
        {
            return new ContactInfoManager(session);
        }
		public IIndustryManager GetIndustryManager()
        {
            return new IndustryManager();
        }
		public IIndustryManager GetIndustryManager(INHibernateSession session)
        {
            return new IndustryManager(session);
        }
		public ILogManager GetLogManager()
        {
            return new LogManager();
        }
		public ILogManager GetLogManager(INHibernateSession session)
        {
            return new LogManager(session);
        }
		public IMarketInfoManager GetMarketInfoManager()
        {
            return new MarketInfoManager();
        }
		public IMarketInfoManager GetMarketInfoManager(INHibernateSession session)
        {
            return new MarketInfoManager(session);
        }
		public IProductManager GetProductManager()
        {
            return new ProductManager();
        }
		public IProductManager GetProductManager(INHibernateSession session)
        {
            return new ProductManager(session);
        }
		public IRegionManager GetRegionManager()
        {
            return new RegionManager();
        }
		public IRegionManager GetRegionManager(INHibernateSession session)
        {
            return new RegionManager(session);
        }
		public IUserManager GetUserManager()
        {
            return new UserManager();
        }
		public IUserManager GetUserManager(INHibernateSession session)
        {
            return new UserManager(session);
        }
        
        #endregion
    }
}
